package hottargui.domain.beta;

import hottargui.domain.*;
import hottargui.domain.alpha.*;
import hottargui.domain.standard.*;

public class BetaGameFactoryImpl implements GameFactory{

	public Board createBoard() {
		return new StandardBoard(new AlphaBoardLayoutStrategyImpl());
	}

	public WinnerStrategy createWinnerStrategy(StateMachine sm) {
		return new BetaWinnerStrategyImpl(sm.getBoard());
	}

	public PlaceUnitsStrategy createPlaceUnitsStrategy() {
		return new BetaPlaceUnitsStrategyImpl();
	}

	public AttackStrategy createAttackStrategy() {
		return new BetaAttackStrategyImpl();
	}

	public RoundSequenceStrategy createRoundSequenceStrategy(StateMachine sm){
		return new AlphaRoundSequenceStrategyImpl(sm); // uses the Alpha Strategy according to spec.
	}

	public RoundSequenceStrategy createRoundSequenceStrategy(StateMachine sm, DeckOfCards deck){
		return new AlphaRoundSequenceStrategyImpl(sm); // uses the Alpha Strategy according to spec.
	}

	public EndRoundStrategy createEndRoundStrategy(StateMachine sm) {
		return new AlphaEndRoundStrategyImpl(sm);
	}

	public MoveToBuyStrategy createMoveToBuyStrategy() {
		return new AlphaMoveToBuyStrategyImpl();
	}

	public RollDiceStrategy createRollDiceStrategy() {
		return new StandardDiceStrategy();
	}

	//TODO Change this (ex. battleactions)
	public AfterDieRollActionStrategy createAfterDieRollActionStrategy(StateMachine sm) {
		return new BetaAfterDieRollActionStrategyImpl(sm); 
	}

	public String getWindowTitle() {
		return "Hottargui Beta Variant";
	}
}

